#!/usr/bin/env node


// 脚手架的工作过程
// 1、通过命令行交互询问用户问题
// 2、根据用户回答的结果生成文件
const fs = require('fs')
const path = require('path')
const inquirer = require('inquirer')
const chalk = require('chalk')
const { rendTemplate } = require('./utils')
inquirer.prompt([
    {
        type: 'input',
        name: 'name',
        message: 'project name?'
    },
    {
        type: 'list',
        name: 'template',
        message: '请选择模板：',
        choices: [
            { name: 'default', value: 'default' },
            { name: 'vue', value: 'vue' },
            { name: 'nuxt', value: 'nuxt' }
        ]
    },
    {
        type: 'confirm',
        name: 'isCurrentDir',
        message: '是否在当前文件夹创建',
        default: true
    }
]).then(answers => {
    // 模板目录
    const tmplDir = path.join(__dirname, 'templates', answers.template || 'default')
    // 目标目录 即程序执行的目录 cwd
    let destDir = process.cwd()
    if (!answers.isCurrentDir) {
        fs.mkdirSync(path.resolve(process.cwd(), answers.name))
        destDir = path.resolve(process.cwd(), answers.name)
    }
    // 将模板下的文件全部转换到目标目录
    try {
        console.log(chalk.white('start generating...\n'))
        rendTemplate(tmplDir, destDir, answers)
        console.log(chalk.green('generating successfully...'))
    } catch (error) {
        console.log(chalk.red(error))
    }
})